<?php

// include 连接数据库的代码(因为都要用，所以统一放到一个文件里面，类似于是一个 utils 工具文件，避免再写相同的代码)
include_once "../../models/core_mysql.php"; 

// 获取页面上提交的数据
$uid = (int)$_GET["workNumber"];
$username = $_GET["username"];

// 查询用户的 uid 后放回，再更新用户的打卡信息
$rsUid = getUserIsExist($conn, $uid, $username);
$rsUid = (int)$rsUid;
updateSign($conn, $rsUid);




// 读取已经签到成功的用户并显示到页面
function getUserIsExist($conn, $uid, $username)
{
    // 根据设置的主键 uid 查：
    // 预处理语句，后面的 ？，也是为了防止黑客的攻击
    $sql = "SELECT uid FROM users WHERE uid = ? and username = ?";
    $mysqli_stmt = $conn->prepare($sql);

    // s: string    i: int
    $mysqli_stmt->bind_param('is', $uid, $username);

    // 执行预处理语句
    if($mysqli_stmt->execute()){
        // bind_result() 绑定结果集中的值到变量
        $mysqli_stmt->bind_result($uid);

        // 遍历结果集(error, 不管输入的 username 和 uid 是否对应都可以打卡成功，并且直接回车也是成功的....... error)
        // while($mysqli_stmt->fetch() != null){
        //     while($mysqli_stmt->fetch()){
        //     echo "打卡成功，欢迎：" . $username . "<br>";
        //     echo "工号：" . $uid . "<br>";

        //     echo "<br>";
        // } 
        
        // 正确的
        $res = $mysqli_stmt->fetch();
        if($res){
            echo "打卡成功，欢迎：" . $username . "<br>";
            echo "工号：" . $uid . "<br>";

            echo "<br>";
        }else{
            echo "<script>alert('员工打卡失败'); window.location.href = '../../sign.html';</script>";
        }
    }

    // 释放结果集
    $mysqli_stmt->free_result();
    $mysqli_stmt->close();

    return $uid;
}

// update Sign date 更新打卡信息
function updateSign($conn, $uid)
{
    $is_sign = 1; // 表示今天已经打卡了
    $interval = "+8 hour"; // 上面获取的时间和当地时间少了 8 小时
    $now_time = date('Y-m-d H:i:s', strtotime($time . ' ' . $interval));

    // 改
    $sql = "UPDATE users SET is_sign = ?, sign_time = ? WHERE uid = ?";
    $mysqli_stmt = $conn->prepare($sql);

    // s: string    i: int
    // $mysqli_stmt->bind_param('isi', $is_sign, $sign_time, $uid); // $sign_time 得获取当前系统的时间的哦，用 date('Y-m-d h:i:s', time())
    // 下面的 $uid 在数据库里面是 int 类型的，但是上面从网页获取到的数据不一定是 int 类型的哦。所以上面获取到 $rsUid 之后就强转成 int 类型了
    $mysqli_stmt->bind_param('isi', $is_sign, $now_time, $uid); 

    // 执行预处理语句
    if($mysqli_stmt->execute()){
        echo PHP_EOL;
        //  window.location.href 跳转到新页面
        echo "<script>window.location.href='../../views/office/feedback.php';</script>";
    }else{
        echo $mysqli_stmt->error; // 执行失败，显示错误信息
    }

    // 释放结果集
    $mysqli_stmt->free_result();
    $mysqli_stmt->close();
}


// 释放结果集
$conn->close(); 
